// 引入axios以及element ui中的loading和message组件
import axios from 'axios'
// import { Loading, Message } from 'element-ui'

// 超时时间
axios.defaults.timeout = 120000

// http请求拦截器
var loadinginstace
axios.interceptors.request.use(config => {
  // element ui Loading方法
//   loadinginstace = Loading.service({ fullscreen: true })

  // 设置请求头
  // config.headers['Authorization']=`Bearer ${cookies.get('USER_TOKEN')}`;

  return config
}, error => {
  loadinginstace.close()
  //   Message.error({
  //     message: '加载超时'
  //   })
  return Promise.reject(error)
})

// http响应拦截器
axios.interceptors.response.use(data => { // 响应成功关闭loading
  loadinginstace.close()
  return data
}, error => {
  loadinginstace.close()
  //   Message.error({
  //     message: '加载失败'
  //   })
  return Promise.reject(error)
})

// 通用请求方法
const request = (options) => {
  return new Promise((resolve, reject) => {
    axios({
      url: `${options.url}`,
      method: options.method || 'get',
      params: options.params || '', // query参数
      data: options.data || '' // body参数
    }).then((response) => {
      options.callback && options.callback.call(this, response)
      if (response.status === 200) {
        if (response.data.code === 200) {
          resolve(response.data)
        } else {
        //   Message.error({
        //     message: response.data.msg
        //   })
        }
      } else {
        reject(response.data)
      }
    }).catch(err => {
      options.callback && options.callback.call(this, err)
    //   Message.error({
    //     message: '请求失败，状态码：' + err.response.status + ',   异常信息：  ' + err.response.statusText || '空',
    //     duration: 6000
    //   })
    })
  })
}

export {
  axios,
  request
}
